/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package mx.its.dsw2.biblioteca.bl;

import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import mx.its.dsw2.biblioteca.dao.CategoriaDaoLocal;
import mx.its.dsw2.biblioteca.dao.CategoriadelibroDaoLocal;
import mx.its.dsw2.biblioteca.enumeracion.EstatusTransaccion;
import mx.its.dsw2.biblioteca.modelo.Categoria;
import mx.its.dsw2.biblioteca.modelo.Categoriadelibro;
import mx.its.dsw2.biblioteca.modelo.Libro;

/**
 *
 * @author Juan Carlos
 */
@Stateless
public class CategoriaBl implements CategoriaBlLocal {
    @EJB
    private CategoriadelibroDaoLocal categoriadelibroDao;
    @EJB
    private CategoriaDaoLocal categoriaDao;
    

    @Override
    public EstatusTransaccion register(Categoria category) {
        if (category.getId() == null && categoriaDao.findByDuplicity(category)){
            return EstatusTransaccion.INCOMPLETO;
        } else {
            categoriaDao.create(category);
            return EstatusTransaccion.COMPLETO;
        }
    }

    @Override
    public EstatusTransaccion delete(Categoria category) {
        if (category.getId() == null && categoriaDao.findByDuplicity(category)) {
            return EstatusTransaccion.INCOMPLETO;
        } else {
            categoriaDao.remove(category);
            return EstatusTransaccion.COMPLETO;
        }
    }

    @Override
    public EstatusTransaccion modify(Categoria category) {
        if (category.getId()== null && categoriaDao.findByDuplicity(category)) {
            return EstatusTransaccion.INCOMPLETO;
        } else {
            categoriaDao.edit(category);
            return EstatusTransaccion.COMPLETO;
        }
    }

    @Override
    public List<Categoria> listAll() {
        return categoriaDao.findAll();
    }

    @Override
    public Categoria findById(int category) {
        return categoriaDao.find(category);
    }

    @Override
    public List<Categoria> getListByBook(Libro book) {
        List<Categoriadelibro> lista = categoriadelibroDao.getByLibro(book);
        List<Categoria> listaFinal = new ArrayList<Categoria>();
        
        for (Categoriadelibro categoriadelibro : lista) {
            listaFinal.add(categoriadelibro.getIdCategoria());
        }
        return listaFinal;
    }
    
    

}
